package com.dianxin.smartpark.service.park;

import java.util.List;

import cn.hutool.core.lang.tree.Tree;
import com.chinatelecom.response.common.CommonResponseBody;
import com.dianxin.smartpark.dao.qo.park.SmartParkAreaQO;
import com.dianxin.smartpark.service.validation.Delete;
import com.dianxin.smartpark.service.validation.Save;
import com.dianxin.smartpark.service.validation.Update;
import com.dianxin.smartpark.service.vo.park.SmartParkAreaVO;
import org.springframework.validation.annotation.Validated;

/**
 * 区域管理接口
 * 
 * @author chenjiasong
 * @date 2021-08-19
 */
public interface SmartParkAreaService
{
    /**
     * 查询区域管理
     * 
     * @param smartParkAreaqo 区域管理
     * @return 区域管理
     */
    CommonResponseBody<SmartParkAreaVO> selectSmartParkArea(SmartParkAreaQO smartParkAreaqo);

    /**
     * 查询区域管理列表
     * 
     * @param smartParkAreaqo 区域管理
     * @return 区域管理集合
     */
    CommonResponseBody<List<SmartParkAreaVO>> selectSmartParkAreaList(SmartParkAreaQO smartParkAreaqo);

    /**
     * 查询区域管理树
     *
     * @param smartParkAreaqo 区域管理
     * @return 区域管理集合
     */
    CommonResponseBody<List<Tree<String>>> selectSmartParkAreaTree(SmartParkAreaQO smartParkAreaqo);

    /**
     * 新增区域管理
     * 
     * @param smartParkAreavo 区域管理
     * @return 结果
     */
    @Validated(Save.class)
    CommonResponseBody<Boolean> insertSmartParkArea(SmartParkAreaVO smartParkAreavo);

    /**
     * 修改区域管理
     * 
     * @param smartParkAreavo 区域管理
     * @return 结果
     */
    @Validated(Update.class)
    CommonResponseBody<Boolean> updateSmartParkArea(SmartParkAreaVO smartParkAreavo);

    /**
     * 删除区域管理信息
     * 
     * @param vo 区域管理
     * @return 结果
     */
    @Validated(Delete.class)
    CommonResponseBody<Boolean> deleteSmartParkArea(SmartParkAreaVO vo);
}
